package com.heima.stroke.handler;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.heima.commons.domin.bo.RoutePlanResultBO;
import com.heima.commons.utils.HttpClientUtils;
import org.apache.kafka.common.protocol.types.Field;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Component
public class BaiduMapClient {
    @Value("${baidu.map.api}")
    private String api;
    @Value("${baidu.map.ak}")
    private String ak;

    private final static Logger logger = LoggerFactory.getLogger(BaiduMapClient.class);

    //TODO:任务3.2-调百度路径计算两点间的距离，和预估抵达时长
    public RoutePlanResultBO pathPlanning(String origins, String destinations) {
        Map<String, String> map = new HashMap<>();
        map.put("origins", origins);
        map.put("destinations", destinations);
        map.put("ak", ak);
        String result = null;
        logger.info("百度地图路径规划请求参数：{}", map);
        try {
            result = HttpClientUtils.doGet(api, map);
            logger.info("百度地图路径规划返回结果：{}", result);
        } catch (Exception e) {
            e.printStackTrace();
        }
        //将从百度地图API获取的JSON字符串result解析为JSONObject对象
        JSONObject jsonObject = (JSONObject) JSONObject.parse(result);
        //确保JSON解析成功，检查百度地图API返回状态码是否为0（0表示请求成功）
        if (jsonObject != null && jsonObject.get("status").equals(0)) {
            //从JSON对象中提取"result"字段，该字段包含路径规划的具体结果数据
            JSONArray resultArray = jsonObject.getJSONArray("result");
            //检查 resultArray 是否不为空且不为空数组
            if (resultArray != null && !resultArray.isEmpty()) {
                //将 JSONArray 转换为 RoutePlanResultBO 类型的 Java 列表，并返回列表中的第一个元素（即第一个路径规划结果）。
                return resultArray.toJavaList(RoutePlanResultBO.class).get(0);
            }
        }
        return null;
    }
}
